package com.xhcl.system.service.impl;

import java.util.List;
import java.util.Map;
import java.util.ArrayList;
import com.xhcl.common.core.domain.Stree;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.xhcl.system.mapper.TGgHsdwMapper;
import com.xhcl.system.domain.TGgHsdw;
import com.xhcl.system.domain.TSrhsAccountTemp;
import com.xhcl.system.service.ITGgHsdwService;
import com.xhcl.common.core.text.Convert;
import com.xhcl.common.exception.BusinessException;
import com.xhcl.common.utils.StringUtils;

/**
 * 核算单位Service业务层处理
 * 
 * @author xhcl
 * @date 2020-08-25
 */
@Service
public class TGgHsdwServiceImpl implements ITGgHsdwService 
{
    @Autowired
    private TGgHsdwMapper tGgHsdwMapper;

    /**
     * 查询核算单位
     * 
     * @param dwbm 核算单位ID
     * @return 核算单位
     */
    @Override
    public TGgHsdw selectTGgHsdwById(String dwbm)
    {
        return tGgHsdwMapper.selectTGgHsdwById(dwbm);
    }

    /**
     * 查询核算单位列表
     * 
     * @param tGgHsdw 核算单位
     * @return 核算单位
     */
    @Override
    public List<TGgHsdw> selectTGgHsdwList(TGgHsdw tGgHsdw)
    {
        return tGgHsdwMapper.selectTGgHsdwList(tGgHsdw);
    }

    /**
     * 新增核算单位
     * 
     * @param tGgHsdw 核算单位
     * @return 结果
     */
    @Override
    public int insertTGgHsdw(TGgHsdw tGgHsdw)
    {
        return tGgHsdwMapper.insertTGgHsdw(tGgHsdw);
    }

    /**
     * 修改核算单位
     * 
     * @param tGgHsdw 核算单位
     * @return 结果
     */
    @Override
    public int updateTGgHsdw(TGgHsdw tGgHsdw)
    {
        return tGgHsdwMapper.updateTGgHsdw(tGgHsdw);
    }

    /**
     * 删除核算单位对象
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deleteTGgHsdwByIds(String ids)
    {
        return tGgHsdwMapper.deleteTGgHsdwByIds(Convert.toStrArray(ids));
    }

    /**
     * 删除核算单位信息
     * 
     * @param dwbm 核算单位ID
     * @return 结果
     */
    @Override
    public int deleteTGgHsdwById(String dwbm)
    {
        return tGgHsdwMapper.deleteTGgHsdwById(dwbm);
    }

    /**
     * 查询核算单位树列表
     * 
     * @return 所有核算单位信息
     */
    @Override
    public List<Stree> selectTGgHsdwTree()
    {
        List<TGgHsdw> tGgHsdwList = tGgHsdwMapper.selectTGgHsdwList(new TGgHsdw());
        List<Stree> ztrees = new ArrayList<Stree>();
        for (TGgHsdw tGgHsdw : tGgHsdwList)
        {
            Stree ztree = new Stree();
            ztree.setId(tGgHsdw.getDwbm());
            ztree.setpId(tGgHsdw.getSjdwbm());
            ztree.setName(tGgHsdw.getDwbm()+"-"+tGgHsdw.getDwmc());
            ztree.setTitle(tGgHsdw.getDwmc()+"-"+tGgHsdw.getHskhh()+"-"+tGgHsdw.getHszh()+"-"+tGgHsdw.getHszhmc());
            ztrees.add(ztree);
        }
        return ztrees;
    }
    public List<Stree> selectTGgHsdwTreeGjzt(String gjzt){
    	
    	 TGgHsdw gghsdw=new TGgHsdw();
    	 if (StringUtils.isNotEmpty(gjzt)) {
    		 gghsdw.getParams().put("gjzt", gjzt);
    	 }
    	 List<TGgHsdw> tGgHsdwList = tGgHsdwMapper.selectTGgHsdwList(gghsdw);
         List<Stree> ztrees = new ArrayList<Stree>();
         for (TGgHsdw tGgHsdw : tGgHsdwList)
         {
             Stree ztree = new Stree();
             ztree.setId(tGgHsdw.getDwbm());
             ztree.setpId(tGgHsdw.getSjdwbm());
             ztree.setName(tGgHsdw.getDwbm()+"-"+tGgHsdw.getDwmc());
             ztree.setTitle(tGgHsdw.getDwmc());
             ztrees.add(ztree);
         }
         return ztrees;
     }
    public List<TGgHsdw> selectTGgHsdwForAllList(TGgHsdw tGgHsdw)
    {   
    	if (tGgHsdw.getParams().get("flag")!=null && tGgHsdw.getParams().get("flag").equals("on")) {
    	   return tGgHsdwMapper.selectTGgHsdwForAllMjList(tGgHsdw);
    	}else {
          return tGgHsdwMapper.selectTGgHsdwForAllYwList(tGgHsdw);
    	}
    }
 
    public int calludpdateHsdw(Map map) throws BusinessException {
       tGgHsdwMapper.calludpdateHsdw(map);
   	   if (!(map.get("outrev")!=null && map.get("outrev").equals("0"))) {
   		   throw new BusinessException(map.get("outrev").toString());
   	   }
	   return 1;
   } 
}
